package com.springstudy.shiro.shiro;

import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.UnknownSessionException;
import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;

import java.io.Serializable;
import java.util.Collection;

/**
 * 可自定义实现会话的存储、持久化
 * @author chenrongrong
 * @since 2020/3/11 13:23
 */
@Slf4j
public class SessionDAO extends AbstractSessionDAO {

    @Override
    protected Serializable doCreate(Session session) {
        Serializable sessionId = generateSessionId(session);
        assignSessionId(session, sessionId);
        //此处对session进行持久化
        //...
        log.info("创建持久化session");

        return sessionId;
    }

    @Override
    protected Session doReadSession(Serializable serializable) {
        //此处读取持久化session数据
        //...
        log.info("读取持久化session");

        return null;
    }

    @Override
    public void update(Session session) throws UnknownSessionException {
        //此处更新持久化session数据
        //...
        log.info("更新持久化session");
    }

    @Override
    public void delete(Session session) {
        //此处删除持久化session数据
        //...
        log.info("删除持久化session");
    }

    @Override
    public Collection<Session> getActiveSessions() {
        //实现获取当前所有活跃用户，如果用户量多此方法影响性能
        //...
        log.info("获取持久化session用户");

        return null;
    }
}
